import request from '@/utils/request'

// 查询床位列表
export function listBed(query) {
  return request({
    url: '/bed/bed/list',
    method: 'get',
    params: query
  })
}
// 级联查询床位列表
export function listBedDto(query) {
  return request({
    url: '/bed/bed/listDto',
    method: 'get',
    params: query
  })
}
// 级联查询床位列表
export function listBedDto1(query) {
  return request({
    url: '/bed/bed/listDto1',
    method: 'get',
    params: query
  })
}
// 查询床位详细
export function getBed(id) {
  return request({
    url: '/bed/bed/' + id,
    method: 'get'
  })
}

// 新增床位
export function addBed(data) {
  return request({
    url: '/bed/bed',
    method: 'post',
    data: data
  })
}

// 修改床位
export function updateBed(data) {
  return request({
    url: '/bed/bed',
    method: 'put',
    data: data
  })
}

// 删除床位
export function delBed(id) {
  return request({
    url: '/bed/bed/' + id,
    method: 'delete'
  })
}
// ========================================== 楼层管理接口 ==========================================

/**
 * 查询所有楼层及关联信息（含房间、床位）
 * @returns {Promise} 楼层列表（带层级关系）
 */
export function getFloorsWithRelations() {
  return request({
    url: '/api/bed-management/floors', // 对应后端 BedManagementController 的 getAllFloors 接口
    method: 'get'
  })
}

/**
 * 获取单个楼层详情
 * @param {Number} id - 楼层ID
 * @returns {Promise} 楼层详情
 */
export function getFloor(id) {
  return request({
    url: `/api/bed-management/floor/${id}`,
    method: 'get'
  })
}

/**
 * 新增楼层
 * @param {Object} data - 楼层数据
 * @param {String} data.floorName - 楼层名称
 * @param {Number} data.sortNo - 排序号
 * @returns {Promise}
 */
export function addFloor(data) {
  return request({
    url: '/api/bed-management/floor', // 对应后端 addFloor 接口
    method: 'post',
    data
  })
}

/**
 * 修改楼层
 * @param {Object} data - 楼层数据（含ID）
 * @param {Number} data.id - 楼层ID
 * @param {String} data.floorName - 楼层名称
 * @param {Number} data.sortNo - 排序号
 * @returns {Promise}
 */
export function updateFloor(data) {
  return request({
    url: '/api/bed-management/floor',
    method: 'put',
    data
  })
}

/**
 * 删除楼层
 * @param {Number} id - 楼层ID
 * @returns {Promise}
 */
export function delFloor(id) {
  return request({
    url: `/api/bed-management/floor/${id}`,
    method: 'delete'
  })
}


// ========================================== 房间管理接口 ==========================================

/**
 * 查询房间列表（支持按楼层筛选）
 * @param {Object} query - 查询参数
 * @param {Number} query.floorId - 楼层ID（可选）
 * @returns {Promise} 房间列表
 */
export function listRoom(query) {
  return request({
    url: '/api/bed-management/rooms',
    method: 'get',
    params: query
  })
}

/**
 * 获取单个房间详情（含床位信息）
 * @param {Number} id - 房间ID
 * @returns {Promise} 房间详情
 */
export function getRoom(id) {
  return request({
    url: `/api/bed-management/room/${id}`,
    method: 'get'
  })
}

/**
 * 新增房间
 * @param {Object} data - 房间数据
 * @param {String} data.roomNo - 房间号
 * @param {Number} data.floorId - 所属楼层ID
 * @param {Number} data.roomTypeId - 房间类型ID
 * @param {Number} data.sortNo - 排序号
 * @returns {Promise}
 */
export function addRoom(data) {
  return request({
    url: '/api/bed-management/room', // 对应后端 addRoom 接口
    method: 'post',
    data
  })
}

/**
 * 修改房间
 * @param {Object} data - 房间数据（含ID）
 * @param {Number} data.id - 房间ID
 * @param {String} data.roomNo - 房间号
 * @param {Number} data.roomTypeId - 房间类型ID
 * @param {Number} data.sortNo - 排序号
 * @returns {Promise}
 */
export function updateRoom(data) {
  return request({
    url: '/api/bed-management/room',
    method: 'put',
    data
  })
}

export function getRoomDetail(id) {
  return request({
    url: `/api/bed-management/room/${id}`,
    method: 'get'
  });
}

/**
 * 删除房间
 * @param {Number} id - 房间ID
 * @returns {Promise}
 */
export function delRoom(id) {
  return request({
    url: `/api/bed-management/room/${id}`,
    method: 'delete'
  })
}
// ========================================== 护理员绑定接口 ==========================================

/**
 * 绑定护理员到床位（批量）
 * @param {Number} bedId - 床位ID
 * @param {Array<Number>} caregiverIds - 护理员ID列表
 * @returns {Promise}
 */
export function bindCaregiverToBed(bedId, caregiverIds) {
  return request({
    url: '/api/bed-management/bind-caregiver', // 对应后端 bindCaregiver 接口
    method: 'post',
    params: { bedId }, // 路径参数：床位ID
    data: caregiverIds // 请求体：护理员ID列表
  })
}

/**
 * 解除护理员与床位的绑定
 * @param {Number} bedId - 床位ID
 * @param {Array<Number>} caregiverIds - 护理员ID列表（可选，不传则解除所有）
 * @returns {Promise}
 */
export function unbindCaregiverFromBed(bedId, caregiverIds) {
  return request({
    url: '/api/bed-management/unbind-caregiver',
    method: 'delete',
    params: { bedId },
    data: caregiverIds
  })
}


// ========================================== 老人入住相关接口 ==========================================

/**
 * 老人入住（关联床位+更新状态）
 * @param {Number} bedId - 床位ID
 * @param {Object} elderly - 老人信息
 * @returns {Promise}
 */
export function checkInElderly(bedId, elderly) {
  return request({
    url: '/api/bed-management/check-in', // 对应后端 checkIn 接口
    method: 'post',
    params: { bedId }, // 床位ID作为路径参数
    data: elderly // 老人信息作为请求体
  })
}

/**
 * 老人请假
 * @param {Number} bedId - 床位ID
 * @returns {Promise}
 */
export function askForLeave(bedId) {
  return request({
    url: '/api/bed-management/ask-leave', // 对应后端 askForLeave 接口
    method: 'post',
    params: { bedId }
  })
}

/**
 * 老人销假
 * @param {Number} bedId - 床位ID
 * @returns {Promise}
 */
export function cancelLeave(bedId) {
  return request({
    url: '/api/bed-management/cancel-leave', // 对应后端 cancelLeave 接口
    method: 'post',
    params: { bedId }
  })
}


export function listRoomType() {
  return request({
    url: '/system/roomtype/list', // 与后端 RoomTypeController 的路径一致
    method: 'get',
  })
}